Архитектура ОС

Организация памяти. Виртуальная память

Архитектура ОС

План лекции

1. Иерархия памяти и задачи управления

2. Простые схемы управления памятью

3. Концепция виртуальной памяти

4. Страничная организация памяти

5. Таблицы страниц

6. Страничные ошибки и алгоритмы замещения

7. Разделяемая память и защита памяти

8. Производительность и TLB

9. Современные подходы

Организация памяти. Виртуальная память
Архитектура ОС

1. Иерархия памяти

Компьютерные системы используют иерархию памяти с различными уровнями скорости и ёмкости:

  • Регистры процессора — наиболее быстрая и дорогая память
  • Кэш-память (L1, L2, L3) — быстрая память промежуточного уровня
  • Оперативная память (RAM) — основная память системы
  • Постоянная память (SSD/HDD) — долговременное хранение данных
Организация памяти. Виртуальная память
Архитектура ОС

Свойства уровней иерархии

Верхние уровни:

  • Высокая скорость доступа
  • Малый объём
  • Высокая стоимость за байт
  • Расположены ближе к процессору

Нижние уровни:

  • Низкая скорость доступа
  • Большой объём
  • Низкая стоимость за байт
  • Расположены дальше от процессора
Организация памяти. Виртуальная память
Архитектура ОС

Задачи управления памятью

Операционная система отвечает за:

  • Выделение памяти — назначение памяти процессам
  • Освобождение памяти — возврат памяти после завершения процессов
  • Защита памяти — изоляция процессов друг от друга
  • Разделяемая память — эффективное использование ресурсов
  • Масштабируемость — поддержка процессов различного размера
Организация памяти. Виртуальная память
Архитектура ОС

2. Монопрограммированная система

В простейшем случае в памяти находится только один процесс:

  • Преимущества: простота реализации, отсутствие конфликтов
  • Недостатки: неэффективное использование ресурсов, простои процессора
Организация памяти. Виртуальная память
Архитектура ОС

Фиксированные разделы (Fixed Partitioning)

Память делится на фиксированные разделы:

  • Преимущества:
    • Поддержка многозадачности
    • Простота реализации
  • Недостатки:
    • Внутренняя фрагментация
    • Ограниченность по размеру процессов
    • Неэффективное использование памяти
Организация памяти. Виртуальная память
Архитектура ОС

Динамические разделы (Dynamic Partitioning)

Разделы создаются под размер процесса:

  • Преимущества:
    • Отсутствие внутренней фрагментации
    • Гибкость в размерах
  • Недостатки:
    • Внешняя фрагментация
    • Сложность поиска свободных блоков
    • Необходимость уплотнения памяти
Организация памяти. Виртуальная память
Архитектура ОС

Внутренняя и внешняя фрагментация

Внутренняя фрагментация:

  • Возникает при фиксированных разделах
  • Выделено больше памяти, чем нужно процессу
  • «Пустоты» внутри разделов
  • Неустранима без изменения размера разделов

Внешняя фрагментация:

  • Возникает при динамических разделах
  • Свободная память разбросана мелкими блоками
  • Суммарно памяти достаточно, но нельзя выделить блок нужного размера
  • Устраняется уплотнением (compaction)
Организация памяти. Виртуальная память
Архитектура ОС

3. Концепция виртуальной памяти

Виртуальная память — технология, позволяющая процессам использовать больше памяти, чем физически доступно в системе.

Каждый процесс работает с собственным виртуальным адресным пространством.

Ключевые преимущества:

  • Процессы могут быть больше RAM
  • Каждый процесс имеет своё адресное пространство (изоляция)
  • Программисты работают с линейным адресным пространством
  • Эффективное разделение памяти между процессами
Организация памяти. Виртуальная память
Архитектура ОС

Принципы работы виртуальной памяти

  • Виртуальные адреса — адреса, используемые программой
  • Физические адреса — реальные адреса в оперативной памяти
  • Аппаратное обеспечение преобразует виртуальные адреса в физические
  • ОС управляет процессом преобразования
  • Преобразование невидимо для приложений
Организация памяти. Виртуальная память
Архитектура ОС

4. Страничная организация (Paging)

Память делится на фиксированные блоки:

  • Виртуальные страницы — блоки виртуального адресного пространства
  • Физические страницы (кадры) — блоки физической памяти
  • Размер страницы — обычно 4 КБ, но может варьироваться
  • Страницы виртуальной памяти отображаются в кадры физической памяти
  • Отображение задаётся таблицей страниц
Организация памяти. Виртуальная память
Архитектура ОС

Преобразование виртуальных адресов

Процесс преобразования виртуального адреса в физический:

  1. Разделение адреса на номер страницы и смещение
  2. Поиск в таблице страниц — получение номера физического кадра
  3. Формирование физического адреса — кадр + смещение
Виртуальный адрес: |  Номер страницы  |  Смещение  |
                            ↓
Таблица страниц:   Номер страницы → Номер кадра
                            ↓
Физический адрес:  |  Номер кадра     |  Смещение  |
Организация памяти. Виртуальная память
Архитектура ОС

5. Таблица страниц

Структура данных, отображающая виртуальные страницы на физические:

  • Номер физической страницы (кадра)
  • Бит присутствия — страница находится в памяти
  • Бит модификации (dirty bit) — страница была изменена
  • Бит обращения (reference bit) — к странице было обращение
  • Биты защиты — права доступа (чтение, запись, исполнение)
Организация памяти. Виртуальная память
Архитектура ОС

Многоуровневые таблицы страниц

Для 32-битных и 64-битных систем одноуровневая таблица слишком велика:

  • Двухуровневая — для 32-битных систем (например, x86)
  • Трёхуровневая — используется в некоторых архитектурах
  • Четырёхуровневая — в современных 64-битных процессорах (x86-64)

Иерархическая структура позволяет хранить только используемые части таблицы.

Организация памяти. Виртуальная память
Архитектура ОС

Инвертированная таблица страниц

Вместо таблицы по одной записи на виртуальную страницу — одна запись на физический кадр:

  • Количество записей = количество физических кадров
  • Экономия памяти для больших адресных пространств
  • Недостаток: сложный поиск по таблице (линейный)
  • Решение: хеширование для ускорения поиска
  • Примеры: PowerPC, IA-64 (Itanium)
Организация памяти. Виртуальная память
Архитектура ОС

Сравнение типов таблиц страниц

Тип Число записей Расход памяти Скорость поиска
Одноуровневая По числу виртуальных страниц Высокий Быстро (индекс)
Многоуровневая По числу используемых страниц Средний Доступ за nn обращений
Инвертированная По числу кадров Низкий Медленно (хеширование)
Организация памяти. Виртуальная память
Архитектура ОС

6. Страничная ошибка (Page Fault)

Страничная ошибка возникает при обращении к странице, отсутствующей в физической памяти.

Обработка страничной ошибки:

  1. Аппаратное обеспечение генерирует исключение
  2. ОС проверяет допустимость обращения
  3. Поиск свободного физического кадра
  4. Чтение страницы с диска в кадр
  5. Обновление таблицы страниц
  6. Перезапуск прерванной инструкции
Организация памяти. Виртуальная память
Архитектура ОС

Время обработки страничной ошибки

Страничная ошибка — дорогостоящая операция:

  • Обращение к диску: ~1000010\,000 раз медленнее, чем к RAM
  • Время обслуживания: ~8108{-}10 мс (SSD), ~102010{-}20 мс (HDD)
  • Эффективное время доступа:

tэф=(1p)tдоступ+ptошибкаt_{эф} = (1 - p) \cdot t_{доступ} + p \cdot t_{ошибка}

где pp — вероятность страничной ошибки

Организация памяти. Виртуальная память
Архитектура ОС

Алгоритмы замещения страниц

Когда свободных кадров нет, ОС выбирает страницу для вытеснения:

  • FIFO — замещается самая старая страница
  • LRU — замещается наименее недавно использованная
  • Оптимальный (OPT) — замещается страница с самым далёким будущим использованием
  • Часовой алгоритм (Clock) — аппроксимация LRU через бит обращения
Организация памяти. Виртуальная память
Архитектура ОС

Алгоритм FIFO

First-In-First-Out:

  • Замещается страница, находящаяся в памяти дольше всех
  • Простая реализация через очередь
  • Аномалия Билэди: увеличение числа кадров может увеличить число ошибок
  • Используется редко в чистом виде
Организация памяти. Виртуальная память
Архитектура ОС

Алгоритм LRU

Least Recently Used:

  • Замещается страница, к которой дольше всего не было обращений
  • Хорошая аппроксимация оптимального алгоритма
  • Основан на принципе временной локальности
  • Недостаток: сложная реализация — необходимо отслеживать порядок обращений
Организация памяти. Виртуальная память
Архитектура ОС

Оптимальный алгоритм

OPT (Optimal Page Replacement):

  • Замещается страница, которая будет использована в самом далёком будущем
  • Минимальное число страничных ошибок
  • Нереализуем на практике — требует знания будущих обращений
  • Используется как теоретический эталон для сравнения алгоритмов
Организация памяти. Виртуальная память
Архитектура ОС

Часовой алгоритм (Clock)

Аппроксимация LRU с использованием бита обращения:

  • Страницы организованы в кольцевой список
  • «Стрелка» указывает на текущую страницу
  • При замещении:
    • Если бит обращения = 1 → сбросить бит, перейти к следующей
    • Если бит обращения = 0 → замещается данная страница
  • Эффективная реализация, широко применяется
Организация памяти. Виртуальная память
Архитектура ОС

Сравнение алгоритмов замещения

Алгоритм Сложность Производительность Практическое применение
FIFO Низкая Низкая Редко в чистом виде
LRU Высокая Высокая Часто (аппроксимации)
OPT Идеальная Эталон
Clock Средняя Хорошая Широко применяется
Организация памяти. Виртуальная память
Архитектура ОС

Принцип локальности

Принцип локальности объясняет эффективность виртуальной памяти:

Виды локальности:

  • Временная — недавно использованные данные будут использованы снова
  • Пространственная — данные рядом с использованными будут востребованы

Проявления:

  • Циклы в программах
  • Последовательный доступ к массивам
  • Повторяющиеся вызовы функций
Организация памяти. Виртуальная память
Архитектура ОС

Рабочий набор и трешинг

Рабочий набор W(t,Δ)W(t, \Delta):

  • Множество страниц, использованных за последние Δ\Delta обращений
  • Определяет «потребность» процесса в памяти
  • Используется для стратегии подкачки

Трешинг (Thrashing):

  • Чрезмерная активность подкачки
  • Процесс тратит больше времени на ожидание страниц, чем на выполнение
  • Возникает при нехватке кадров
  • Система деградирует по производительности
Организация памяти. Виртуальная память
Архитектура ОС

7. Разделяемая память

Разделяемая память позволяет нескольким процессам обращаться к одним и тем же физическим страницам:

  • Экономия памяти — нет дублирования данных
  • Быстрый обмен данными — прямой доступ к общей памяти
  • Разделяемые библиотеки — код загружается один раз, используется многими процессами
  • Явное создание разделяемых сегментов через IPC
  • Требует синхронизации доступа
Организация памяти. Виртуальная память
Архитектура ОС

Защита памяти

ОС обеспечивает защиту памяти от несанкционированного доступа:

Механизмы защиты:

  • Биты защиты в таблице страниц (R/W/X)
  • Режимы процессора (user/kernel)
  • Изоляция адресных пространств

Ошибки защиты:

  • Запись в страницу только для чтения
  • Выполнение данных как кода
  • Обращение за пределы адресного пространства
  • Приводят к исключению (SEGFAULT)
Организация памяти. Виртуальная память
Архитектура ОС

8. TLB (Translation Lookaside Buffer)

TLB — аппаратный кэш таблиц страниц внутри MMU:

  • Хранит недавно использованные отображения «виртуальная страница → физический кадр»
  • Ускоряет трансляцию адресов (одно обращение вместо нескольких)
  • TLB Hit — отображение найдено в TLB (быстро)
  • TLB Miss — обращение к таблице страниц в памяти (медленнее)
Организация памяти. Виртуальная память
Архитектура ОС

Эффективность TLB

Эффективное время доступа с учётом TLB:

tэф=tTLB+(1phit)tтаблицыt_{эф} = t_{TLB} + (1 - p_{hit}) \cdot t_{таблицы}

где phitp_{hit} — вероятность попадания в TLB (обычно >99%> 99\%)

Способы повышения эффективности:

  • Увеличение размера TLB
  • Многоуровневый TLB (L1/L2)
  • Предзагрузка записей (prefetch)
Организация памяти. Виртуальная память
Архитектура ОС

Оптимизация производительности виртуальной памяти

Предварительная загрузка:

  • Загрузка страниц до использования
  • Основана на прогнозировании обращений
  • Уменьшение задержек

Оптимизация таблиц:

  • Многоуровневые таблицы страниц
  • Инвертированные таблицы
  • Кэширование в TLB
  • Большие страницы (Huge Pages)
Организация памяти. Виртуальная память
Архитектура ОС

9. Многоуровневая виртуальная память (64 бит)

Современные 64-битные системы:

  • Огромное виртуальное адресное пространство (2482^{48} байт в x86-64)
  • Четырёхуровневые таблицы страниц (PML4)
  • Поддержка больших страниц (2 МБ, 1 ГБ) для снижения накладных расходов
  • Пятый уровень (PML5) — для процессоров с > 128 ТБ физической памяти
Организация памяти. Виртуальная память
Архитектура ОС

Виртуализация и контейнеры

Виртуальные машины:

  • Каждая ВМ имеет своё адресное пространство
  • Гипервизор управляет памятью
  • Двухуровневая трансляция адресов (EPT / NPT)
  • Расширенные таблицы страниц

Контейнеры:

  • Совместное использование ядра хоста
  • Изоляция через пространства имён (namespaces)
  • Cgroups для ограничения ресурсов
  • Эффективное использование памяти
Организация памяти. Виртуальная память
Архитектура ОС

Перспективы развития

Новые направления:

  • Неволатильная память (NVM) — интеграция с постоянной памятью
  • Оптимизация энергопотребления — управление питанием памяти
  • Машинное обучение — интеллектуальное управление памятью
  • Гетерогенные вычисления — GPU/TPU с собственной памятью

Вызовы:

  • Рост объёмов данных
  • Увеличение числа ядер процессора
  • Безопасность в облачных средах
Организация памяти. Виртуальная память
Архитектура ОС

Заключение

Организация памяти. Виртуальная память
Архитектура ОС

Ключевые выводы лекции

  • Иерархия памяти обеспечивает баланс скорости и ёмкости

  • Виртуальная память даёт каждому процессу собственное адресное пространство

  • Страничная организация — основной механизм виртуальной памяти

  • Алгоритмы замещения (LRU, Clock) аппроксимируют оптимальный алгоритм

  • TLB критически важен для производительности трансляции адресов

  • Разделяемая память обеспечивает эффективный IPC

  • Защита памяти — основа безопасности процессов

  • Трешинг — главная угроза производительности

Организация памяти. Виртуальная память
Архитектура ОС

Вопросы для самоконтроля

  1. Опишите уровни иерархии памяти и их характеристики.
  2. В чём различие между внутренней и внешней фрагментацией?
  3. Сформулируйте основные преимущества виртуальной памяти.
  4. Как происходит преобразование виртуального адреса в физический при страничной организации?
  5. Какие поля содержит запись таблицы страниц?
  6. Опишите шаги обработки страничной ошибки.
  7. Сравните алгоритмы замещения FIFO, LRU и Clock.
  8. Что такое рабочий набор процесса и трешинг?
  9. Какую роль играет TLB в трансляции адресов?
  10. Какие механизмы защиты памяти предоставляет ОС?
Организация памяти. Виртуальная память
Архитектура ОС

Рекомендуемые ресурсы

Основная литература:

  1. Таненбаум Э., Бос Х. Современные операционные системы. 4-е изд. — Питер, 2015.
  2. Столлингс В. Операционные системы. 9-е изд. — Вильямс, 2018.

Дополнительная литература:

  1. Silberschatz A., Galvin P., Gagne G. Operating System Concepts. 10th ed. — Wiley, 2018.
  2. Robert Love. Linux Kernel Development. 3rd ed. — Addison-Wesley, 2010.
Организация памяти. Виртуальная память

Переходим к структуре лекции. Обозначим основные блоки — от простых схем управления памятью к виртуальной памяти, таблицам страниц и современным подходам.

Начнём с фундамента — иерархии памяти. Обратите внимание на обратную зависимость между скоростью доступа и объёмом каждого уровня.

Сравним крайние уровни иерархии. Это поможет понять, почему ОС приходится управлять памятью так тщательно — разрыв в скорости достигает порядков.

Перечислим ключевые задачи ОС в управлении памятью. Каждая из них будет подробно раскрыта в последующих слайдах.

Простейший случай — в памяти только одна программа. Это отправная точка для понимания эволюции подходов к управлению памятью.

Первый шаг к многозадачности. Обратите внимание на проблему внутренней фрагментации — она мотивирует переход к динамическим разделам.

Динамические разделы решают внутреннюю фрагментацию, но порождают внешнюю. Это фундаментальная проблема, которую решает виртуальная память.

Визуализируем два типа фрагментации. Ключевое различие: внутренняя — потери внутри выделенного блока, внешняя — свободная память разбросана мелкими кусками.

Переход к главной теме лекции. Виртуальная память — революционное решение проблем фрагментации и ограниченности физической памяти.

Важно подчеркнуть: преобразование адресов абсолютно прозрачно для приложения. Программист работает с непрерывным адресным пространством, не зная о реальной физической структуре памяти.

Paging — основной механизм виртуальной памяти. Фиксированный размер страницы (обычно 4 КБ) существенно упрощает управление памятью по сравнению с сегментацией.

Покажем конкретный механизм трансляции. Ключевой момент: смещение внутри страницы остаётся неизменным — меняется только номер кадра.

Таблица страниц — ключевая структура данных. Обратите внимание на служебные биты: presence, dirty, reference — ОС активно использует их для управления памятью.

Одноуровневая таблица для 64-битного адресного пространства заняла бы петабайты. Иерархическая структура позволяет хранить только используемые части таблицы.

Альтернативный подход — одна запись на физический кадр. Это экономит память, но усложняет поиск. Хеширование помогает решить проблему скорости.

Подведём итог сравнением трёх подходов к организации таблиц страниц. Каждый имеет свою нишу: многоуровневые — в x86, инвертированные — в PowerPC.

Page fault — центральное событие в работе виртуальной памяти. Это дорогостоящая операция, требующая обращения к диску, поэтому алгоритмы замещения так важны.

Количественная оценка стоимости page fault. Диск на четыре порядка медленнее RAM — поэтому даже малая вероятность ошибки сильно влияет на эффективное время доступа.

Когда свободных кадров нет, ОС должна выбрать жертву для вытеснения. Рассмотрим четыре алгоритма — от простейшего FIFO к практически применяемому Clock.

Самый простой алгоритм, но с неожиданным свойством — аномалией Билэди: больше кадров может привести к большему числу ошибок. Это мотивирует более сложные подходы.

LRU — «золотой стандарт» по качеству, основан на принципе временной локальности. Но точная реализация дорогая, поэтому на практике используют аппроксимации.

OPT невозможно реализовать — он требует знания будущих обращений. Но он служит теоретическим эталоном: чем ближе реальный алгоритм к OPT, тем лучше.

Clock — практичный компромисс между простотой FIFO и качеством LRU. Использует только бит обращения, что делает реализацию эффективной. Широко применяется в реальных ОС.

Сводная таблица для сравнения. Ни один алгоритм не идеален — каждый со своим компромиссом между сложностью и производительностью.

Локальность — фундаментальное свойство программ, на котором основана эффективность виртуальной памяти. Без неё страничная организация была бы нежизнеспособна.

Два ключевых понятия: рабочий набор определяет минимальную потребность процесса в памяти, трешинг — катастрофическое падение производительности при её неудовлетворении.

Разделяемая память — самый быстрый механизм IPC, так как процессы обращаются к одним и тем же физическим страницам напрямую. Но обязательно нужна синхронизация доступа.

Защита памяти — основа безопасности и стабильности системы. Нарушение защиты мгновенно приводит к исключению — segfault — и завершению процесса.

TLB — критический компонент производительности. Без него каждое обращение к памяти требовало бы обхода многоуровневой таблицы, что недопустимо замедлило бы систему.

При hit rate > 99% TLB практически устраняет накладные расходы на трансляцию. Но даже 1% miss заметно влияет — поэтому так важны оптимизации TLB.

Два направления оптимизации: предварительная загрузка уменьшает задержки, а улучшение структуры таблиц снижает накладные расходы. Huge pages — важный современный инструмент.

Современные реалии: 4–5 уровней таблиц страниц в x86-64. Huge pages (2 МБ, 1 ГБ) критически важны для снижения накладных расходов на трансляцию в таких системах.

Виртуализация добавляет второй уровень трансляции адресов (EPT/NPT). Контейнеры легче — они используют namespaces и cgroups без дополнительных уровней трансляции.

Заглянем в будущее: NVM стирает границу между оперативной и постоянной памятью, а машинное обучение открывает новые подходы к интеллектуальному управлению памятью.

Переходим к подведению итогов лекции.

Главные тезисы лекции в сжатом виде. Рекомендую студентам зафиксировать эти восемь пунктов — они составляют ядро понимания виртуальной памяти.

Десять вопросов для самоконтроля, покрывающих все ключевые темы лекции. Используйте их для проверки глубины понимания материала.

Рекомендую Таненбаума как основу, Silberschatz для углублённого изучения, а Love — для понимания реализации управления памятью в ядре Linux.